package com.lh.singleton.type6;

//无参构造
public class Singleton1 {
	public static void main(String[] args) {

		Singleton instance = Singleton.getInstance();

		instance.show();
	}
}

class Singleton {

	private static volatile Singleton instance;

	// 1.构造器私有化，外部能new
	private Singleton() {

	}

	// 本类内部创建对象实例
	// 即懒汉式
	public static Singleton getInstance() {

		if (instance == null) {
			// 提供一个静态的公有方法，加入双重检查代码，解决线程安全问题, 同时解决懒加载问题
			// 同时保证了效率, 推荐使用
			synchronized (Singleton.class) {
				if (instance == null) {
					instance = new Singleton();
				}
			}
		}

		return instance;
	}

	public void show() {
		System.out.println("测试一下");
	}
}